package testes;

import static org.junit.Assert.*;
import iscte.es.copaPaises.businessLayer.Cidade;
import iscte.es.copaPaises.businessLayer.Estadio;
import iscte.es.copaPaises.businessLayer.Jogo;

import java.util.HashSet;
import java.util.Set;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class EstadioTest {
	private Estadio e;
	private int inauguracao;
	private int lotacao;
	private String nome;
	private Cidade cidade;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		e=new Estadio();
		inauguracao=20;
		lotacao=30000;
		nome="Catedral";
		cidade=new Cidade();
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testEstadio() {
		assertTrue("Estadio()",Estadio.allInstances.contains(e));
	}

	@Test
	public void testEstadioIntIntStringCidade() {
		e=new Estadio(inauguracao,lotacao,nome,cidade);
		assertTrue("Estadio(inauguracao,lotacao,nome,cidade)",Estadio.allInstances.contains(e));
	}

	@Test
	public void testInauguracao() {
		e.setInauguracao(inauguracao);
		assertEquals("Setter/Getter Estadio.inauguracao()",inauguracao,e.inauguracao());
	}

	@Test
	public void testLotacao() {
		e.setLotacao(lotacao);
		assertEquals("Setter/Getter Estadio.lotacao()",lotacao,e.lotacao());
	}

	@Test
	public void testNome() {
		e.setNome(nome);
		assertEquals("Setter/Getter Estadio.nome()",nome,e.nome());
	}

	@Test
	public void testCidade() {
		e.setCidade(cidade);
		assertEquals("Setter/Getter Estadio.cidade()",cidade,e.cidade());
	}

	@Test
	public void testJogos() {
		Jogo j1=new Jogo();
		Jogo j2=new Jogo();
		Jogo j3=new Jogo();
		Set<Jogo> jogos=new HashSet<Jogo>();
		jogos.add(j1);
		jogos.add(j2);
		e.setJogos(jogos);
		assertEquals("Setter Estadio.jogos()",jogos,e.jogos());
	}


	@Test
	public void testInicializa() {
		e.inicializa(nome, inauguracao, lotacao, cidade);
		assertEquals("Estadio.inicializa(nome, inauguracao, lotacao, cidade)",e.nome(),nome);
		assertEquals("Estadio.inicializa(nome, inauguracao, lotacao, cidade)",e.inauguracao(),inauguracao);
		assertEquals("Estadio.inicializa(nome, inauguracao, lotacao, cidade)",e.lotacao(),lotacao);
		assertEquals("Estadio.inicializa(nome, inauguracao, lotacao, cidade)",e.cidade(),cidade);
	}

	@Test
	public void testToString() {
		e=new Estadio(inauguracao,lotacao,nome,cidade);
		assertEquals("Estadio.toString()",e.toString() , "Estadio [inauguracao=" + inauguracao + ", lotacao=" + lotacao + ", nome=" + nome + ", cidade=" + cidade + "]\n");
		
	}

}
